package nancal.mp.db.mongo.entity.iam

import nancal.mp.db.mongo.AuthTypeEnum
import nbcp.base.db.CodeName
import nbcp.base.db.IdName
import nbcp.base.db.annotation.Cn
import nbcp.base.model.BaseMarkEntity

/**
 * @Author wrk
 *
 * @Description
 * @Date 2021/12/15-17:16
 */

open class TenantAppAuthResourceInfo @JvmOverloads constructor(
    @Cn("应用IdName")
    var appInfo: CodeName = CodeName(),

    @Cn("租户")
    var tenant: IdName = IdName(),

    @Cn("名称")
    var type: AuthTypeEnum = AuthTypeEnum.Role,

    @Cn("授权主体")
    var target: IdName = IdName(),

    @Cn("授权")
    var auths: MutableList<AuthResourceInfo> = mutableListOf(),

    /**
     * 从 SysAppRole 同步时， isSysDefine = true
     * 同步角色资源授权关系时，同步资源，再同步角色，最后同步关系。
     * 更新时：
     * 循环更新关系表。
     *  SysAppRole.appInfo.code + SysAppRole.name
     *        ==> 从 TenantAppRole 表中确定  id ,标记 tenantRoleId
     *        ==> 从 TenantAppAuthResourceInfo 中查询: type == Role and target.id == tenantRoleId and isSysDefine == true
     *        更新auths ： SysAppRole.auths 在 TenantResouceInfo 中的值。
     */
    var isSysDefine: Boolean = false,

    @Cn("备注")
    var remark: String = ""
) : BaseMarkEntity() {
}


